/**
 * 
 */
package ar.edu.utn.frgp.EjemploHibernate.dao.impl;

import java.util.List;

import org.hibernate.Session;
import org.hibernate.criterion.Restrictions;
import org.springframework.dao.DataAccessException;

import ar.edu.utn.frgp.EjemploHibernate.dao.ClienteDao;
import ar.edu.utn.frgp.EjemploHibernate.dao.DefaultGenericDao;
import ar.edu.utn.frgp.EjemploHibernate.model.Cliente;

/**
 * @author gvolpe
 * 
 *         31/08/2012 12:32:59
 */
public class ClienteDaoImpl extends DefaultGenericDao implements ClienteDao {

	public void create(Cliente obj) {
		hibernateTemplate.save(obj);
	}

	public void update(Cliente obj) {
		hibernateTemplate.update(obj);
	}

	public void delete(Cliente obj) {
		hibernateTemplate.delete(obj);
	}

	public Cliente buscarCliente(String dni) {
		Session session = hibernateTemplate.getSessionFactory()
				.getCurrentSession();
		Cliente cliente = (Cliente) session.createCriteria(Cliente.class)
				.add(Restrictions.idEq(dni)).uniqueResult();
		return cliente;
	}

	@SuppressWarnings("unchecked")
	public List<Cliente> getAll() {

		try {

			List<Cliente> clientes = hibernateTemplate.find("from cliente");

			if (clientes.size() == 0)
				return null;

			else {
				return clientes;
			}

		} catch (DataAccessException ex) {
			System.out.println("Error en la Consulta a la Base de Datos:   "
					+ ex);

		}
		return null;

	}

	public Cliente buscarCliente(String dni, String password) {

		// consulta para traer cliente x dni y password
		Session session = hibernateTemplate.getSessionFactory()
				.getCurrentSession();
		Cliente cliente = (Cliente) session.createCriteria(Cliente.class)
				.add(Restrictions.idEq(dni))
				.add(Restrictions.eq("password", password)).uniqueResult();
		return cliente;

	}
}
